package com.sg.dto.biz.component.req;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * @desc ImplementLoopAddPersonPreFinStandardDataSnapshotComReqDto
 * @使用场景
 */
@Data
public class ImplementLoopAddPersonPreFinStandardDataSnapshotComReqDto
        extends BaseDto
        implements Serializable {

    /**
     * 业务数据对象 ACCT_STD_DATA_TARGET_CONT_SNAP:账户标准数据目标内容快照 ACCT_STD_DATA_AMT_SNAP:目标内容周期、相关人与账户快照 INIT_BUDGET_AND_REAL_ACCT:初始化预算或实体账户 TARGET_BUDGET_SET:目标预算设置 CACL_OR_UNDERPIN_STD_DATA_SNAP:计算或托底标准数据快照 EVA_TEMP_CONF_ARGUMENTS:评价模板配置参数 ORG_TYPE_DICTIONARY:组织架构类型字典 BUSINESS_DATA_OBJECT_TEST:业务数据对象验证 CALC_SUBJECTIVE_WEIGHT_SCORE:计算权重主观评分 CALC_DATA_RESULT:计算数据结果 PLATFORM_OM_CONF:平台运维配置
     */
    @NotNull(message = "业务数据对象不能为空")
    @ApiModelProperty("业务数据对象")
    private String businessDataObject;

    /**
     * 数据对象批次标识
     */
    @NotNull(message = "数据对象批次标识不能为空")
    @ApiModelProperty("数据对象批次标识")
    private String dataObjectBatchCode;

    /**
     * 上一更新周期ID
     */
    @ApiModelProperty("上一更新周期ID")
    private String preUpdateCycleId;

    /**
     * 上一更新目标周期ID
     */
    @ApiModelProperty("上一更新目标周期ID")
    private String preUpdateEvaTargetCycleId;

    /**
     * 关联归属主体ID
     */
    @NotNull(message = "关联归属主体ID不能为空")
    @ApiModelProperty("关联归属主体ID")
    private String accountObjectId;

    /**
     * 归属账户ID
     */
    @NotNull(message = "归属账户ID不能为空")
    @ApiModelProperty("归属账户ID")
    private String accountId;

    /**
     * 是否预算账户 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否预算账户不能为空")
    @ApiModelProperty("是否预算账户")
    private String isBudgetAccount;

    /**
     * 累计收入金额
     */
    @NotNull(message = "累计收入金额不能为空")
    @ApiModelProperty("累计收入金额")
    private Double totalBudgetAmount;

    /**
     * 账户余额
     */
    @NotNull(message = "账户余额不能为空")
    @ApiModelProperty("账户余额")
    private Double accountActualBalance;

    /**
     * 可用金额
     */
    @NotNull(message = "可用金额不能为空")
    @ApiModelProperty("可用金额")
    private Double settlableBalance;

    /**
     * 冻结金额
     */
    @NotNull(message = "冻结金额不能为空")
    @ApiModelProperty("冻结金额")
    private Double unSettlableBalance;

    /**
     * 累计支出金额
     */
    @NotNull(message = "累计支出金额不能为空")
    @ApiModelProperty("累计支出金额")
    private Double accruedSettledAmount;

    /**
     * 资金使用率
     */
    @ApiModelProperty("资金使用率")
    private Double fundUsageRate;

}
